package iterable_0929;

import java.sql.SQLOutput;

/**
 * 包装类：
 * java的泛型只支持引用，不支持基本类型
 * 故而引出包装类（Byte,Integer,Short,Character,Boolean,Long）
 * 基本类型->包装类   装箱
 * 包装类->基本类型   拆箱
 * x类型 a  y类型b
 *（1）a=b语法不报错有一些几种情形：
 *  1)x类型和y类型是同一个类型
 *  2）x类型和y类型都是基本类型，x表示范围>y
 *  3）x类型和y类型都是引用类型，x类型是y类型的上级类型
 *  a)x是一个接口，y是一个类，y实现了x接口
 *  b)x,y都是一个接口，y继承自x
 *  c)x,y都是一个类，y继承自x
 *
 * 2）a=（x）b语法不报错有一些几种情形：
 *  1)隐示转换
 *  2)x类型和y类型都是基本类型，x范围<y
 *  3)x类型和y类型都是引用类型，必须在继承链上
 */
public class MyBoxing {
    public static void main(String[] args) {
        int a=1;
        Integer ai=new Integer(1);//引用类型完整写法
//        Integer ai=1;
        a=ai.intValue();//装箱
        ai=Integer.valueOf(a);//拆箱

        a=ai;//编译器可以自动完成
        ai=a;
//int和int比较==和equals都可以，Integer和Integer比较==和equals有区别。
        //==表示相等性，equals表示同一性
        Integer b=1000;
        Integer c=1000;
        System.out.println(b==c);//false
        System.out.println(b.equals(c));//true

        int d=1000;//Integer和int比较，java会自动拆箱，变成int和int比较
        System.out.println(d==c);//true
        System.out.println(c.equals(d));//true
    }
}
